{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import tensorflow as tf\n",
    "import matplotlib.pyplot as plt\n",
    "import pickle\n",
    "from sklearn.model_selection import train_test_split\n",
    "from skimage import transform"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "def prepare_data(train_data, train_label, memory_unit, batch_size):\n",
    "    number, height, width, channel = \\\n",
    "    train_data.shape[0], train_data.shape[1], train_data.shape[2], train_data.shape[3]\n",
    "\n",
    "    number_of_mem_unit = number // memory_unit\n",
    "\n",
    "    # let the data become from (1200, 80, 160, 1) to (40, 30, 80 * 160)\n",
    "    sample_number = number_of_mem_unit * memory_unit\n",
    "    unit_train_data = train_data[0:sample_number,:,:,:].reshape(-1, batch_size, memory_unit, height * width)\n",
    "    \n",
    "    # label shift to right by one step\n",
    "    unit_train_label = train_label[0:sample_number,:,:,:].reshape(-1, batch_size, memory_unit, height * width)\n",
    "    \n",
    "    return iter(unit_train_data), iter(unit_train_label)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Example of formatting\n",
    "#labels = np.array(pickle.load(open(\"road_labels.p\", \"rb\" )))\n",
    "#print(len(labels))\n",
    "#print(labels.shape)\n",
    "#print(labels.reshape(-1, 4, 63, 40 * 80).shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/spencer/Documents/MachineLearning/project_venv/lib/python3.5/site-packages/skimage/transform/_warps.py:84: UserWarning: The default mode, 'constant', will be changed to 'reflect' in skimage 0.15.\n",
      "  warn(\"The default mode, 'constant', will be changed to 'reflect' in \"\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.930234432220459\n",
      "0.8411764705882356\n"
     ]
    }
   ],
   "source": [
    "datalist = pickle.load(open(\"CNN_road_labels.p\", \"rb\" ))[0:52850]\n",
    "data = np.array([transform.resize(i, (40, 80)) for i in np.clip(np.array(datalist), 0, 1)])\n",
    "labellist = pickle.load(open(\"road_labels.p\", \"rb\" ))[0:52850]\n",
    "label = np.array([transform.resize(i, (40, 80)) for i in labellist])\n",
    "\n",
    "# label = label / 255\n",
    "\n",
    "print(np.max(data))\n",
    "print(np.max(label))\n",
    "\n",
    "train_ratio = 0.8\n",
    "memory_size = 3\n",
    "batch_size = 17\n",
    "train_data, test_data, train_label, test_label = \\\n",
    "train_test_split(data, label, train_size = train_ratio,\n",
    "                              test_size = 1 - train_ratio,\n",
    "                              shuffle = False)\n",
    "\n",
    "input_data_iter, input_label_iter = prepare_data(train_data, train_label, memory_size, batch_size)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "iteration 0, error is 0.10624900460243225\n",
      "\n",
      "\n",
      "iteration 1, error is 0.07687506824731827\n",
      "\n",
      "\n",
      "iteration 2, error is 0.06724279373884201\n",
      "\n",
      "\n",
      "iteration 3, error is 0.05738676339387894\n",
      "\n",
      "\n",
      "iteration 4, error is 0.07496723532676697\n",
      "\n",
      "\n",
      "iteration 5, error is 0.06891410797834396\n",
      "\n",
      "\n",
      "iteration 6, error is 0.02925853431224823\n",
      "\n",
      "\n",
      "iteration 7, error is 0.029674990102648735\n",
      "\n",
      "\n",
      "iteration 8, error is 0.02485569752752781\n",
      "\n",
      "\n",
      "iteration 9, error is 0.030929837375879288\n",
      "\n",
      "\n",
      "iteration 10, error is 0.027418123558163643\n",
      "\n",
      "\n",
      "iteration 11, error is 0.039111219346523285\n",
      "\n",
      "\n",
      "iteration 12, error is 0.018736939877271652\n",
      "\n",
      "\n",
      "iteration 13, error is 0.030088618397712708\n",
      "\n",
      "\n",
      "iteration 14, error is 0.020758409053087234\n",
      "\n",
      "\n",
      "iteration 15, error is 0.02072383277118206\n",
      "\n",
      "\n",
      "iteration 16, error is 0.06608336418867111\n",
      "\n",
      "\n",
      "iteration 17, error is 0.08011577278375626\n",
      "\n",
      "\n",
      "iteration 18, error is 0.055515676736831665\n",
      "\n",
      "\n",
      "iteration 19, error is 0.03122377023100853\n",
      "\n",
      "\n",
      "iteration 20, error is 0.03880714997649193\n",
      "\n",
      "\n",
      "iteration 21, error is 0.0229698084294796\n",
      "\n",
      "\n",
      "iteration 22, error is 0.05550716072320938\n",
      "\n",
      "\n",
      "iteration 23, error is 0.0645129457116127\n",
      "\n",
      "\n",
      "iteration 24, error is 0.05515401065349579\n",
      "\n",
      "\n",
      "iteration 25, error is 0.04145575314760208\n",
      "\n",
      "\n",
      "iteration 26, error is 0.0503804050385952\n",
      "\n",
      "\n",
      "iteration 27, error is 0.025986526161432266\n",
      "\n",
      "\n",
      "iteration 28, error is 0.01771511696279049\n",
      "\n",
      "\n",
      "iteration 29, error is 0.050760891288518906\n",
      "\n",
      "\n",
      "iteration 30, error is 0.04255795478820801\n",
      "\n",
      "\n",
      "iteration 31, error is 0.04517105594277382\n",
      "\n",
      "\n",
      "iteration 32, error is 0.04374147206544876\n",
      "\n",
      "\n",
      "iteration 33, error is 0.04296809807419777\n",
      "\n",
      "\n",
      "iteration 34, error is 0.0389263778924942\n",
      "\n",
      "\n",
      "iteration 35, error is 0.017871534451842308\n",
      "\n",
      "\n",
      "iteration 36, error is 0.016982244327664375\n",
      "\n",
      "\n",
      "iteration 37, error is 0.016503700986504555\n",
      "\n",
      "\n",
      "iteration 38, error is 0.027577774599194527\n",
      "\n",
      "\n",
      "iteration 39, error is 0.040941327810287476\n",
      "\n",
      "\n",
      "iteration 40, error is 0.05124221369624138\n",
      "\n",
      "\n",
      "iteration 41, error is 0.04049939289689064\n",
      "\n",
      "\n",
      "iteration 42, error is 0.03835105895996094\n",
      "\n",
      "\n",
      "iteration 43, error is 0.04641715809702873\n",
      "\n",
      "\n",
      "iteration 44, error is 0.051577892154455185\n",
      "\n",
      "\n",
      "iteration 45, error is 0.046464283019304276\n",
      "\n",
      "\n",
      "iteration 46, error is 0.02687469869852066\n",
      "\n",
      "\n",
      "iteration 47, error is 0.021458156406879425\n",
      "\n",
      "\n",
      "iteration 48, error is 0.051033858209848404\n",
      "\n",
      "\n",
      "iteration 49, error is 0.02764732763171196\n",
      "\n",
      "\n",
      "iteration 50, error is 0.020884964615106583\n",
      "\n",
      "\n",
      "iteration 51, error is 0.018024129793047905\n",
      "\n",
      "\n",
      "iteration 52, error is 0.017975308001041412\n",
      "\n",
      "\n",
      "iteration 53, error is 0.01815602369606495\n",
      "\n",
      "\n",
      "iteration 54, error is 0.016756154596805573\n",
      "\n",
      "\n",
      "iteration 55, error is 0.014908417128026485\n",
      "\n",
      "\n",
      "iteration 56, error is 0.02019682340323925\n",
      "\n",
      "\n",
      "iteration 57, error is 0.013744243420660496\n",
      "\n",
      "\n",
      "iteration 58, error is 0.017670314759016037\n",
      "\n",
      "\n",
      "iteration 59, error is 0.011652104556560516\n",
      "\n",
      "\n",
      "iteration 60, error is 0.012734076008200645\n",
      "\n",
      "\n",
      "iteration 61, error is 0.013471776619553566\n",
      "\n",
      "\n",
      "iteration 62, error is 0.006922988686710596\n",
      "\n",
      "\n",
      "iteration 63, error is 0.009277088567614555\n",
      "\n",
      "\n",
      "iteration 64, error is 0.009462377987802029\n",
      "\n",
      "\n",
      "iteration 65, error is 0.0074249329045414925\n",
      "\n",
      "\n",
      "iteration 66, error is 0.0072923083789646626\n",
      "\n",
      "\n",
      "iteration 67, error is 0.005338557995855808\n",
      "\n",
      "\n",
      "iteration 68, error is 0.006527755409479141\n",
      "\n",
      "\n",
      "iteration 69, error is 0.006672987248748541\n",
      "\n",
      "\n",
      "iteration 70, error is 0.003145728027448058\n",
      "\n",
      "\n",
      "iteration 71, error is 0.004175072535872459\n",
      "\n",
      "\n",
      "iteration 72, error is 0.0033327178098261356\n",
      "\n",
      "\n",
      "iteration 73, error is 0.00395709415897727\n",
      "\n",
      "\n",
      "iteration 74, error is 0.010207466781139374\n",
      "\n",
      "\n",
      "iteration 75, error is 0.005573123227804899\n",
      "\n",
      "\n",
      "iteration 76, error is 0.005027038510888815\n",
      "\n",
      "\n",
      "iteration 77, error is 0.0030935602262616158\n",
      "\n",
      "\n",
      "iteration 78, error is 0.011036239564418793\n",
      "\n",
      "\n",
      "iteration 79, error is 0.004209448583424091\n",
      "\n",
      "\n",
      "iteration 80, error is 0.010769933462142944\n",
      "\n",
      "\n",
      "iteration 81, error is 0.017100369557738304\n",
      "\n",
      "\n",
      "iteration 82, error is 0.03736485540866852\n",
      "\n",
      "\n",
      "iteration 83, error is 0.027321867644786835\n",
      "\n",
      "\n",
      "iteration 84, error is 0.023881878703832626\n",
      "\n",
      "\n",
      "iteration 85, error is 0.03075234591960907\n",
      "\n",
      "\n",
      "iteration 86, error is 0.031179198995232582\n",
      "\n",
      "\n",
      "iteration 87, error is 0.03184329345822334\n",
      "\n",
      "\n",
      "iteration 88, error is 0.013606316410005093\n",
      "\n",
      "\n",
      "iteration 89, error is 0.006136537063866854\n",
      "\n",
      "\n",
      "iteration 90, error is 0.008293610997498035\n",
      "\n",
      "\n",
      "iteration 91, error is 0.0061141857877373695\n",
      "\n",
      "\n",
      "iteration 92, error is 0.00621809484437108\n",
      "\n",
      "\n",
      "iteration 93, error is 0.007289617322385311\n",
      "\n",
      "\n",
      "iteration 94, error is 0.007197982165962458\n",
      "\n",
      "\n",
      "iteration 95, error is 0.0043100034818053246\n",
      "\n",
      "\n",
      "iteration 96, error is 0.005450928118079901\n",
      "\n",
      "\n",
      "iteration 97, error is 0.004882211331278086\n",
      "\n",
      "\n",
      "iteration 98, error is 0.006867234595119953\n",
      "\n",
      "\n",
      "iteration 99, error is 0.0033040146809071302\n",
      "\n",
      "\n",
      "iteration 100, error is 0.004766380414366722\n",
      "\n",
      "\n",
      "iteration 101, error is 0.0035965549759566784\n",
      "\n",
      "\n",
      "iteration 102, error is 0.0027214756701141596\n",
      "\n",
      "\n",
      "iteration 103, error is 0.0020607600454241037\n",
      "\n",
      "\n",
      "iteration 104, error is 0.003024489153176546\n",
      "\n",
      "\n",
      "iteration 105, error is 0.009432300925254822\n",
      "\n",
      "\n",
      "iteration 106, error is 0.007738862652331591\n",
      "\n",
      "\n",
      "iteration 107, error is 0.0024725834373384714\n",
      "\n",
      "\n",
      "iteration 108, error is 0.009143500588834286\n",
      "\n",
      "\n",
      "iteration 109, error is 0.0035824181977659464\n",
      "\n",
      "\n",
      "iteration 110, error is 0.0033241594210267067\n",
      "\n",
      "\n",
      "iteration 111, error is 0.007543242070823908\n",
      "\n",
      "\n",
      "iteration 112, error is 0.005627266597002745\n",
      "\n",
      "\n",
      "iteration 113, error is 0.0069244480691850185\n",
      "\n",
      "\n",
      "iteration 114, error is 0.013000820763409138\n",
      "\n",
      "\n",
      "iteration 115, error is 0.008343533612787724\n",
      "\n",
      "\n",
      "iteration 116, error is 0.004964395426213741\n",
      "\n",
      "\n",
      "iteration 117, error is 0.0074522183276712894\n",
      "\n",
      "\n",
      "iteration 118, error is 0.02674744464457035\n",
      "\n",
      "\n",
      "iteration 119, error is 0.005703785456717014\n",
      "\n",
      "\n",
      "iteration 120, error is 0.006484093610197306\n",
      "\n",
      "\n",
      "iteration 121, error is 0.012997850775718689\n",
      "\n",
      "\n",
      "iteration 122, error is 0.0346711240708828\n",
      "\n",
      "\n",
      "iteration 123, error is 0.03295755013823509\n",
      "\n",
      "\n",
      "iteration 124, error is 0.017237430438399315\n",
      "\n",
      "\n",
      "iteration 125, error is 0.006850771605968475\n",
      "\n",
      "\n",
      "iteration 126, error is 0.0048207188956439495\n",
      "\n",
      "\n",
      "iteration 127, error is 0.013252823613584042\n",
      "\n",
      "\n",
      "iteration 128, error is 0.014232499524950981\n",
      "\n",
      "\n",
      "iteration 129, error is 0.015544292517006397\n",
      "\n",
      "\n",
      "iteration 130, error is 0.009703787043690681\n",
      "\n",
      "\n",
      "iteration 131, error is 0.011063878424465656\n",
      "\n",
      "\n",
      "iteration 132, error is 0.01293216459453106\n",
      "\n",
      "\n",
      "iteration 133, error is 0.009102290496230125\n",
      "\n",
      "\n",
      "iteration 134, error is 0.012102106586098671\n",
      "\n",
      "\n",
      "iteration 135, error is 0.01453469693660736\n",
      "\n",
      "\n",
      "iteration 136, error is 0.00894234050065279\n",
      "\n",
      "\n",
      "iteration 137, error is 0.01934908702969551\n",
      "\n",
      "\n",
      "iteration 138, error is 0.0175767969340086\n",
      "\n",
      "\n",
      "iteration 139, error is 0.012686074711382389\n",
      "\n",
      "\n",
      "iteration 140, error is 0.011371648870408535\n",
      "\n",
      "\n",
      "iteration 141, error is 0.014293591491878033\n",
      "\n",
      "\n",
      "iteration 142, error is 0.05496423318982124\n",
      "\n",
      "\n",
      "iteration 143, error is 0.051496539264917374\n",
      "\n",
      "\n",
      "iteration 144, error is 0.034260816872119904\n",
      "\n",
      "\n",
      "iteration 145, error is 0.02238624356687069\n",
      "\n",
      "\n",
      "iteration 146, error is 0.01317193266004324\n",
      "\n",
      "\n",
      "iteration 147, error is 0.029099073261022568\n",
      "\n",
      "\n",
      "iteration 148, error is 0.03546476364135742\n",
      "\n",
      "\n",
      "iteration 149, error is 0.022841453552246094\n",
      "\n",
      "\n",
      "iteration 150, error is 0.02473405748605728\n",
      "\n",
      "\n",
      "iteration 151, error is 0.029768871143460274\n",
      "\n",
      "\n",
      "iteration 152, error is 0.04532469063997269\n",
      "\n",
      "\n",
      "iteration 153, error is 0.02641633339226246\n",
      "\n",
      "\n",
      "iteration 154, error is 0.01919752173125744\n",
      "\n",
      "\n",
      "iteration 155, error is 0.025437453761696815\n",
      "\n",
      "\n",
      "iteration 156, error is 0.018219169229269028\n",
      "\n",
      "\n",
      "iteration 157, error is 0.022989999502897263\n",
      "\n",
      "\n",
      "iteration 158, error is 0.030462641268968582\n",
      "\n",
      "\n",
      "iteration 159, error is 0.019123580306768417\n",
      "\n",
      "\n",
      "iteration 160, error is 0.008655395358800888\n",
      "\n",
      "\n",
      "iteration 161, error is 0.004627660848200321\n",
      "\n",
      "\n",
      "iteration 162, error is 0.008054244332015514\n",
      "\n",
      "\n",
      "iteration 163, error is 0.009488798677921295\n",
      "\n",
      "\n",
      "iteration 164, error is 0.00966915488243103\n",
      "\n",
      "\n",
      "iteration 165, error is 0.01558495033532381\n",
      "\n",
      "\n",
      "iteration 166, error is 0.006636589765548706\n",
      "\n",
      "\n",
      "iteration 167, error is 0.0037935548461973667\n",
      "\n",
      "\n",
      "iteration 168, error is 0.036384545266628265\n",
      "\n",
      "\n",
      "iteration 169, error is 0.031495966017246246\n",
      "\n",
      "\n",
      "iteration 170, error is 0.02397640235722065\n",
      "\n",
      "\n",
      "iteration 171, error is 0.032822560518980026\n",
      "\n",
      "\n",
      "iteration 172, error is 0.030137909576296806\n",
      "\n",
      "\n",
      "iteration 173, error is 0.010289345867931843\n",
      "\n",
      "\n",
      "iteration 174, error is 0.013167724944651127\n",
      "\n",
      "\n",
      "iteration 175, error is 0.03237050399184227\n",
      "\n",
      "\n",
      "iteration 176, error is 0.03277643024921417\n",
      "\n",
      "\n",
      "iteration 177, error is 0.010541564784944057\n",
      "\n",
      "\n",
      "iteration 178, error is 0.008260414935648441\n",
      "\n",
      "\n",
      "iteration 179, error is 0.006763592828065157\n",
      "\n",
      "\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "iteration 180, error is 0.007024581078439951\n",
      "\n",
      "\n",
      "iteration 181, error is 0.017568396404385567\n",
      "\n",
      "\n",
      "iteration 182, error is 0.012397573329508305\n",
      "\n",
      "\n",
      "iteration 183, error is 0.009078221395611763\n",
      "\n",
      "\n",
      "iteration 184, error is 0.007583179976791143\n",
      "\n",
      "\n",
      "iteration 185, error is 0.006018804386258125\n",
      "\n",
      "\n",
      "iteration 186, error is 0.005999406334012747\n",
      "\n",
      "\n",
      "iteration 187, error is 0.005528711713850498\n",
      "\n",
      "\n",
      "iteration 188, error is 0.013369007036089897\n",
      "\n",
      "\n",
      "iteration 189, error is 0.01772712916135788\n",
      "\n",
      "\n",
      "iteration 190, error is 0.016598179936408997\n",
      "\n",
      "\n",
      "iteration 191, error is 0.015505942516028881\n",
      "\n",
      "\n",
      "iteration 192, error is 0.01364333089441061\n",
      "\n",
      "\n",
      "iteration 193, error is 0.021521994844079018\n",
      "\n",
      "\n",
      "iteration 194, error is 0.014102768152952194\n",
      "\n",
      "\n",
      "iteration 195, error is 0.012605847790837288\n",
      "\n",
      "\n",
      "iteration 196, error is 0.011588351801037788\n",
      "\n",
      "\n",
      "iteration 197, error is 0.055207736790180206\n",
      "\n",
      "\n",
      "iteration 198, error is 0.029156936332583427\n",
      "\n",
      "\n",
      "iteration 199, error is 0.013369589112699032\n",
      "\n",
      "\n",
      "iteration 200, error is 0.012095262296497822\n",
      "\n",
      "\n",
      "iteration 201, error is 0.02407090924680233\n",
      "\n",
      "\n",
      "iteration 202, error is 0.004487290512770414\n",
      "\n",
      "\n",
      "iteration 203, error is 0.016231032088398933\n",
      "\n",
      "\n",
      "iteration 204, error is 0.004840546287596226\n",
      "\n",
      "\n",
      "iteration 205, error is 0.009474987164139748\n",
      "\n",
      "\n",
      "iteration 206, error is 0.0017840280197560787\n",
      "\n",
      "\n",
      "iteration 207, error is 0.0017709654057398438\n",
      "\n",
      "\n",
      "iteration 208, error is 0.0024247157853096724\n",
      "\n",
      "\n",
      "iteration 209, error is 0.0032190028578042984\n",
      "\n",
      "\n",
      "iteration 210, error is 0.0014566583558917046\n",
      "\n",
      "\n",
      "iteration 211, error is 0.0015965389320626855\n",
      "\n",
      "\n",
      "iteration 212, error is 0.0014997278340160847\n",
      "\n",
      "\n",
      "iteration 213, error is 0.007414769381284714\n",
      "\n",
      "\n",
      "iteration 214, error is 0.004640202037990093\n",
      "\n",
      "\n",
      "iteration 215, error is 0.008313807658851147\n",
      "\n",
      "\n",
      "iteration 216, error is 0.007186290342360735\n",
      "\n",
      "\n",
      "iteration 217, error is 0.013488754630088806\n",
      "\n",
      "\n",
      "iteration 218, error is 0.019208598881959915\n",
      "\n",
      "\n",
      "iteration 219, error is 0.0047655911184847355\n",
      "\n",
      "\n",
      "iteration 220, error is 0.017056632786989212\n",
      "\n",
      "\n",
      "iteration 221, error is 0.02251523733139038\n",
      "\n",
      "\n",
      "iteration 222, error is 0.018339388072490692\n",
      "\n",
      "\n",
      "iteration 223, error is 0.02125323750078678\n",
      "\n",
      "\n",
      "iteration 224, error is 0.02258254773914814\n",
      "\n",
      "\n",
      "iteration 225, error is 0.03864701837301254\n",
      "\n",
      "\n",
      "iteration 226, error is 0.04308927059173584\n",
      "\n",
      "\n",
      "iteration 227, error is 0.031131567433476448\n",
      "\n",
      "\n",
      "iteration 228, error is 0.0178888738155365\n",
      "\n",
      "\n",
      "iteration 229, error is 0.014194054529070854\n",
      "\n",
      "\n",
      "iteration 230, error is 0.011421808041632175\n",
      "\n",
      "\n",
      "iteration 231, error is 0.005167294293642044\n",
      "\n",
      "\n",
      "iteration 232, error is 0.006269125267863274\n",
      "\n",
      "\n",
      "iteration 233, error is 0.011673301458358765\n",
      "\n",
      "\n",
      "iteration 234, error is 0.018288785591721535\n",
      "\n",
      "\n",
      "iteration 235, error is 0.018990878015756607\n",
      "\n",
      "\n",
      "iteration 236, error is 0.010074486956000328\n",
      "\n",
      "\n",
      "iteration 237, error is 0.007159066386520863\n",
      "\n",
      "\n",
      "iteration 238, error is 0.003922511823475361\n",
      "\n",
      "\n",
      "iteration 239, error is 0.003677207278087735\n",
      "\n",
      "\n",
      "iteration 240, error is 0.008941473439335823\n",
      "\n",
      "\n",
      "iteration 241, error is 0.020484209060668945\n",
      "\n",
      "\n",
      "iteration 242, error is 0.014356497675180435\n",
      "\n",
      "\n",
      "iteration 243, error is 0.01766696386039257\n",
      "\n",
      "\n",
      "iteration 244, error is 0.018930595368146896\n",
      "\n",
      "\n",
      "iteration 245, error is 0.024356702342629433\n",
      "\n",
      "\n",
      "iteration 246, error is 0.018636828288435936\n",
      "\n",
      "\n",
      "iteration 247, error is 0.01769673079252243\n",
      "\n",
      "\n",
      "iteration 248, error is 0.00973593071103096\n",
      "\n",
      "\n",
      "iteration 249, error is 0.01383055280894041\n",
      "\n",
      "\n",
      "iteration 250, error is 0.014864846132695675\n",
      "\n",
      "\n",
      "iteration 251, error is 0.024479055777192116\n",
      "\n",
      "\n",
      "iteration 252, error is 0.003641588846221566\n",
      "\n",
      "\n",
      "iteration 253, error is 0.004448853433132172\n",
      "\n",
      "\n",
      "iteration 254, error is 0.002449617488309741\n",
      "\n",
      "\n",
      "iteration 255, error is 0.0023461596574634314\n",
      "\n",
      "\n",
      "iteration 256, error is 0.006096337456256151\n",
      "\n",
      "\n",
      "iteration 257, error is 0.0048463353887200356\n",
      "\n",
      "\n",
      "iteration 258, error is 0.006450848188251257\n",
      "\n",
      "\n",
      "iteration 259, error is 0.010318431071937084\n",
      "\n",
      "\n",
      "iteration 260, error is 0.018810730427503586\n",
      "\n",
      "\n",
      "iteration 261, error is 0.013858018442988396\n",
      "\n",
      "\n",
      "iteration 262, error is 0.012697774916887283\n",
      "\n",
      "\n",
      "iteration 263, error is 0.023235183209180832\n",
      "\n",
      "\n",
      "iteration 264, error is 0.031182879582047462\n",
      "\n",
      "\n",
      "iteration 265, error is 0.027844998985528946\n",
      "\n",
      "\n",
      "iteration 266, error is 0.021433662623167038\n",
      "\n",
      "\n",
      "iteration 267, error is 0.016836125403642654\n",
      "\n",
      "\n",
      "iteration 268, error is 0.010908265598118305\n",
      "\n",
      "\n",
      "iteration 269, error is 0.00431551318615675\n",
      "\n",
      "\n",
      "iteration 270, error is 0.01980149745941162\n",
      "\n",
      "\n",
      "iteration 271, error is 0.0202111154794693\n",
      "\n",
      "\n",
      "iteration 272, error is 0.026463447138667107\n",
      "\n",
      "\n",
      "iteration 273, error is 0.00458305049687624\n",
      "\n",
      "\n",
      "iteration 274, error is 0.0077005354687571526\n",
      "\n",
      "\n",
      "iteration 275, error is 0.007332470268011093\n",
      "\n",
      "\n",
      "iteration 276, error is 0.005786743480712175\n",
      "\n",
      "\n",
      "iteration 277, error is 0.01228620670735836\n",
      "\n",
      "\n",
      "iteration 278, error is 0.01505696028470993\n",
      "\n",
      "\n",
      "iteration 279, error is 0.015074116177856922\n",
      "\n",
      "\n",
      "iteration 280, error is 0.00808069296181202\n",
      "\n",
      "\n",
      "iteration 281, error is 0.00784879270941019\n",
      "\n",
      "\n",
      "iteration 282, error is 0.0029987595044076443\n",
      "\n",
      "\n",
      "iteration 283, error is 0.0030975565314292908\n",
      "\n",
      "\n",
      "iteration 284, error is 0.002995949937030673\n",
      "\n",
      "\n",
      "iteration 285, error is 0.0018347646109759808\n",
      "\n",
      "\n",
      "iteration 286, error is 0.00211269105784595\n",
      "\n",
      "\n",
      "iteration 287, error is 0.0017803801456466317\n",
      "\n",
      "\n",
      "iteration 288, error is 0.0014862263342365623\n",
      "\n",
      "\n",
      "iteration 289, error is 0.00189344328828156\n",
      "\n",
      "\n",
      "iteration 290, error is 0.002178039401769638\n",
      "\n",
      "\n",
      "iteration 291, error is 0.0028186338022351265\n",
      "\n",
      "\n",
      "iteration 292, error is 0.002681502141058445\n",
      "\n",
      "\n",
      "iteration 293, error is 0.0015143782366067171\n",
      "\n",
      "\n",
      "iteration 294, error is 0.0018380996771156788\n",
      "\n",
      "\n",
      "iteration 295, error is 0.002698619617149234\n",
      "\n",
      "\n",
      "iteration 296, error is 0.005382545758038759\n",
      "\n",
      "\n",
      "iteration 297, error is 0.0046040648594498634\n",
      "\n",
      "\n",
      "iteration 298, error is 0.020766010507941246\n",
      "\n",
      "\n",
      "iteration 299, error is 0.024558531120419502\n",
      "\n",
      "\n",
      "iteration 300, error is 0.01596704125404358\n",
      "\n",
      "\n",
      "iteration 301, error is 0.03530631214380264\n",
      "\n",
      "\n",
      "iteration 302, error is 0.02260643243789673\n",
      "\n",
      "\n",
      "iteration 303, error is 0.01686074584722519\n",
      "\n",
      "\n",
      "iteration 304, error is 0.02427150309085846\n",
      "\n",
      "\n",
      "iteration 305, error is 0.021667711436748505\n",
      "\n",
      "\n",
      "iteration 306, error is 0.021836813539266586\n",
      "\n",
      "\n",
      "iteration 307, error is 0.010816019028425217\n",
      "\n",
      "\n",
      "iteration 308, error is 0.007434877101331949\n",
      "\n",
      "\n",
      "iteration 309, error is 0.011166260577738285\n",
      "\n",
      "\n",
      "iteration 310, error is 0.008119460195302963\n",
      "\n",
      "\n",
      "iteration 311, error is 0.011804820969700813\n",
      "\n",
      "\n",
      "iteration 312, error is 0.009833352640271187\n",
      "\n",
      "\n",
      "iteration 313, error is 0.009472423233091831\n",
      "\n",
      "\n",
      "iteration 314, error is 0.002576623111963272\n",
      "\n",
      "\n",
      "iteration 315, error is 0.010689863003790379\n",
      "\n",
      "\n",
      "iteration 316, error is 0.0019732562359422445\n",
      "\n",
      "\n",
      "iteration 317, error is 0.008542180992662907\n",
      "\n",
      "\n",
      "iteration 318, error is 0.010227943770587444\n",
      "\n",
      "\n",
      "iteration 319, error is 0.012299614027142525\n",
      "\n",
      "\n",
      "iteration 320, error is 0.012050271965563297\n",
      "\n",
      "\n",
      "iteration 321, error is 0.017270132899284363\n",
      "\n",
      "\n",
      "iteration 322, error is 0.013574139215052128\n",
      "\n",
      "\n",
      "iteration 323, error is 0.00896606408059597\n",
      "\n",
      "\n",
      "iteration 324, error is 0.007547962013632059\n",
      "\n",
      "\n",
      "iteration 325, error is 0.008410005830228329\n",
      "\n",
      "\n",
      "iteration 326, error is 0.011262711137533188\n",
      "\n",
      "\n",
      "iteration 327, error is 0.019345290958881378\n",
      "\n",
      "\n",
      "iteration 328, error is 0.016953712329268456\n",
      "\n",
      "\n",
      "iteration 329, error is 0.012574631720781326\n",
      "\n",
      "\n",
      "iteration 330, error is 0.020484184846282005\n",
      "\n",
      "\n",
      "iteration 331, error is 0.01833689957857132\n",
      "\n",
      "\n",
      "iteration 332, error is 0.016302378848195076\n",
      "\n",
      "\n",
      "iteration 333, error is 0.013182690367102623\n",
      "\n",
      "\n",
      "iteration 334, error is 0.004838768392801285\n",
      "\n",
      "\n",
      "iteration 335, error is 0.014014871791005135\n",
      "\n",
      "\n",
      "iteration 336, error is 0.019521692767739296\n",
      "\n",
      "\n",
      "iteration 337, error is 0.016121037304401398\n",
      "\n",
      "\n",
      "iteration 338, error is 0.015040414407849312\n",
      "\n",
      "\n",
      "iteration 339, error is 0.017417389899492264\n",
      "\n",
      "\n",
      "iteration 340, error is 0.01612788625061512\n",
      "\n",
      "\n",
      "iteration 341, error is 0.0069957016967237\n",
      "\n",
      "\n",
      "iteration 342, error is 0.006943205371499062\n",
      "\n",
      "\n",
      "iteration 343, error is 0.006257162429392338\n",
      "\n",
      "\n",
      "iteration 344, error is 0.005287921987473965\n",
      "\n",
      "\n",
      "iteration 345, error is 0.004058132879436016\n",
      "\n",
      "\n",
      "iteration 346, error is 0.01755165494978428\n",
      "\n",
      "\n",
      "iteration 347, error is 0.01516571082174778\n",
      "\n",
      "\n",
      "iteration 348, error is 0.022989222779870033\n",
      "\n",
      "\n",
      "iteration 349, error is 0.04750911518931389\n",
      "\n",
      "\n",
      "iteration 350, error is 0.045058947056531906\n",
      "\n",
      "\n",
      "iteration 351, error is 0.018581226468086243\n",
      "\n",
      "\n",
      "iteration 352, error is 0.007816626690328121\n",
      "\n",
      "\n",
      "iteration 353, error is 0.005349220708012581\n",
      "\n",
      "\n",
      "iteration 354, error is 0.0028755953535437584\n",
      "\n",
      "\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "iteration 355, error is 0.0026259119622409344\n",
      "\n",
      "\n",
      "iteration 356, error is 0.0024115536361932755\n",
      "\n",
      "\n",
      "iteration 357, error is 0.0020450714509934187\n",
      "\n",
      "\n",
      "iteration 358, error is 0.0018160012550652027\n",
      "\n",
      "\n",
      "iteration 359, error is 0.0033364214468747377\n",
      "\n",
      "\n",
      "iteration 360, error is 0.0026980654802173376\n",
      "\n",
      "\n",
      "iteration 361, error is 0.002557266503572464\n",
      "\n",
      "\n",
      "iteration 362, error is 0.0022164187394082546\n",
      "\n",
      "\n",
      "iteration 363, error is 0.002013546647503972\n",
      "\n",
      "\n",
      "iteration 364, error is 0.001991396304219961\n",
      "\n",
      "\n",
      "iteration 365, error is 0.012548094615340233\n",
      "\n",
      "\n",
      "iteration 366, error is 0.02359507791697979\n",
      "\n",
      "\n",
      "iteration 367, error is 0.02781672216951847\n",
      "\n",
      "\n",
      "iteration 368, error is 0.01705307886004448\n",
      "\n",
      "\n",
      "iteration 369, error is 0.009701547212898731\n",
      "\n",
      "\n",
      "iteration 370, error is 0.00514265475794673\n",
      "\n",
      "\n",
      "iteration 371, error is 0.005940264090895653\n",
      "\n",
      "\n",
      "iteration 372, error is 0.003316281596198678\n",
      "\n",
      "\n",
      "iteration 373, error is 0.004491612780839205\n",
      "\n",
      "\n",
      "iteration 374, error is 0.004274808801710606\n",
      "\n",
      "\n",
      "iteration 375, error is 0.004068498965352774\n",
      "\n",
      "\n",
      "iteration 376, error is 0.0110726747661829\n",
      "\n",
      "\n",
      "iteration 377, error is 0.01010978501290083\n",
      "\n",
      "\n",
      "iteration 378, error is 0.014188571833074093\n",
      "\n",
      "\n",
      "iteration 379, error is 0.03105301782488823\n",
      "\n",
      "\n",
      "iteration 380, error is 0.020115926861763\n",
      "\n",
      "\n",
      "iteration 381, error is 0.002611186122521758\n",
      "\n",
      "\n",
      "iteration 382, error is 0.007676895707845688\n",
      "\n",
      "\n",
      "iteration 383, error is 0.00423856545239687\n",
      "\n",
      "\n",
      "iteration 384, error is 0.0038476891350001097\n",
      "\n",
      "\n",
      "iteration 385, error is 0.01343494188040495\n",
      "\n",
      "\n",
      "iteration 386, error is 0.018711207434535027\n",
      "\n",
      "\n",
      "iteration 387, error is 0.0375753678381443\n",
      "\n",
      "\n",
      "iteration 388, error is 0.014195184223353863\n",
      "\n",
      "\n",
      "iteration 389, error is 0.0153911542147398\n",
      "\n",
      "\n",
      "iteration 390, error is 0.01406098436564207\n",
      "\n",
      "\n",
      "iteration 391, error is 0.03266647085547447\n",
      "\n",
      "\n",
      "iteration 392, error is 0.03852654621005058\n",
      "\n",
      "\n",
      "iteration 393, error is 0.03886052966117859\n",
      "\n",
      "\n",
      "iteration 394, error is 0.006439325865358114\n",
      "\n",
      "\n",
      "iteration 395, error is 0.004604782443493605\n",
      "\n",
      "\n",
      "iteration 396, error is 0.012166162021458149\n",
      "\n",
      "\n",
      "iteration 397, error is 0.009514229372143745\n",
      "\n",
      "\n",
      "iteration 398, error is 0.013903893530368805\n",
      "\n",
      "\n",
      "iteration 399, error is 0.014419622719287872\n",
      "\n",
      "\n",
      "iteration 400, error is 0.010319286026060581\n",
      "\n",
      "\n",
      "iteration 401, error is 0.005565680097788572\n",
      "\n",
      "\n",
      "iteration 402, error is 0.01040493231266737\n",
      "\n",
      "\n",
      "iteration 403, error is 0.00584385683760047\n",
      "\n",
      "\n",
      "iteration 404, error is 0.004367178305983543\n",
      "\n",
      "\n",
      "iteration 405, error is 0.004846361931413412\n",
      "\n",
      "\n",
      "iteration 406, error is 0.004276502411812544\n",
      "\n",
      "\n",
      "iteration 407, error is 0.004012764431536198\n",
      "\n",
      "\n",
      "iteration 408, error is 0.006773907691240311\n",
      "\n",
      "\n",
      "iteration 409, error is 0.01269685011357069\n",
      "\n",
      "\n",
      "iteration 410, error is 0.00410369411110878\n",
      "\n",
      "\n",
      "iteration 411, error is 0.004507999401539564\n",
      "\n",
      "\n",
      "iteration 412, error is 0.0038599418476223946\n",
      "\n",
      "\n",
      "iteration 413, error is 0.018689794465899467\n",
      "\n",
      "\n",
      "iteration 414, error is 0.02295834943652153\n",
      "\n",
      "\n",
      "iteration 415, error is 0.03488251939415932\n",
      "\n",
      "\n",
      "iteration 416, error is 0.029435966163873672\n",
      "\n",
      "\n",
      "iteration 417, error is 0.023025529459118843\n",
      "\n",
      "\n",
      "iteration 418, error is 0.017782703042030334\n",
      "\n",
      "\n",
      "iteration 419, error is 0.011888610199093819\n",
      "\n",
      "\n",
      "iteration 420, error is 0.010348763316869736\n",
      "\n",
      "\n",
      "iteration 421, error is 0.01662639155983925\n",
      "\n",
      "\n",
      "iteration 422, error is 0.011596458032727242\n",
      "\n",
      "\n",
      "iteration 423, error is 0.017149709165096283\n",
      "\n",
      "\n",
      "iteration 424, error is 0.010453160852193832\n",
      "\n",
      "\n",
      "iteration 425, error is 0.01672930270433426\n",
      "\n",
      "\n",
      "iteration 426, error is 0.006988631561398506\n",
      "\n",
      "\n",
      "iteration 427, error is 0.006125504616647959\n",
      "\n",
      "\n",
      "iteration 428, error is 0.010083889588713646\n",
      "\n",
      "\n",
      "iteration 429, error is 0.028079157695174217\n",
      "\n",
      "\n",
      "iteration 430, error is 0.032766859978437424\n",
      "\n",
      "\n",
      "iteration 431, error is 0.030151890590786934\n",
      "\n",
      "\n",
      "iteration 432, error is 0.012024039402604103\n",
      "\n",
      "\n",
      "iteration 433, error is 0.019735537469387054\n",
      "\n",
      "\n",
      "iteration 434, error is 0.008089103735983372\n",
      "\n",
      "\n",
      "iteration 435, error is 0.009631660766899586\n",
      "\n",
      "\n",
      "iteration 436, error is 0.007178856525570154\n",
      "\n",
      "\n",
      "iteration 437, error is 0.011702939867973328\n",
      "\n",
      "\n",
      "iteration 438, error is 0.00883905217051506\n",
      "\n",
      "\n",
      "iteration 439, error is 0.024879831820726395\n",
      "\n",
      "\n",
      "iteration 440, error is 0.013746464625000954\n",
      "\n",
      "\n",
      "iteration 441, error is 0.01708560436964035\n",
      "\n",
      "\n",
      "iteration 442, error is 0.017791960388422012\n",
      "\n",
      "\n",
      "iteration 443, error is 0.018829122185707092\n",
      "\n",
      "\n",
      "iteration 444, error is 0.015935495495796204\n",
      "\n",
      "\n",
      "iteration 445, error is 0.024089733138680458\n",
      "\n",
      "\n",
      "iteration 446, error is 0.0181459728628397\n",
      "\n",
      "\n",
      "iteration 447, error is 0.026756716892123222\n",
      "\n",
      "\n",
      "iteration 448, error is 0.01480160839855671\n",
      "\n",
      "\n",
      "iteration 449, error is 0.011222890578210354\n",
      "\n",
      "\n",
      "iteration 450, error is 0.011471884325146675\n",
      "\n",
      "\n",
      "iteration 451, error is 0.0024830291513353586\n",
      "\n",
      "\n",
      "iteration 452, error is 0.002278048312291503\n",
      "\n",
      "\n",
      "iteration 453, error is 0.009684192948043346\n",
      "\n",
      "\n",
      "iteration 454, error is 0.014124767854809761\n",
      "\n",
      "\n",
      "iteration 455, error is 0.01871495507657528\n",
      "\n",
      "\n",
      "iteration 456, error is 0.010167250409722328\n",
      "\n",
      "\n",
      "iteration 457, error is 0.0025357226841151714\n",
      "\n",
      "\n",
      "iteration 458, error is 0.013011100701987743\n",
      "\n",
      "\n",
      "iteration 459, error is 0.013431090861558914\n",
      "\n",
      "\n",
      "iteration 460, error is 0.010032352060079575\n",
      "\n",
      "\n",
      "iteration 461, error is 0.004552503116428852\n",
      "\n",
      "\n",
      "iteration 462, error is 0.006757307797670364\n",
      "\n",
      "\n",
      "iteration 463, error is 0.005468219984322786\n",
      "\n",
      "\n",
      "iteration 464, error is 0.011935205198824406\n",
      "\n",
      "\n",
      "iteration 465, error is 0.004478767979890108\n",
      "\n",
      "\n",
      "iteration 466, error is 0.003777759848162532\n",
      "\n",
      "\n",
      "iteration 467, error is 0.013342888094484806\n",
      "\n",
      "\n",
      "iteration 468, error is 0.04095946252346039\n",
      "\n",
      "\n",
      "iteration 469, error is 0.021542558446526527\n",
      "\n",
      "\n",
      "iteration 470, error is 0.01976681873202324\n",
      "\n",
      "\n",
      "iteration 471, error is 0.014095449820160866\n",
      "\n",
      "\n",
      "iteration 472, error is 0.023832453414797783\n",
      "\n",
      "\n",
      "iteration 473, error is 0.017084088176488876\n",
      "\n",
      "\n",
      "iteration 474, error is 0.021071016788482666\n",
      "\n",
      "\n",
      "iteration 475, error is 0.01766304112970829\n",
      "\n",
      "\n",
      "iteration 476, error is 0.043608032166957855\n",
      "\n",
      "\n",
      "iteration 477, error is 0.023313263431191444\n",
      "\n",
      "\n",
      "iteration 478, error is 0.017061792314052582\n",
      "\n",
      "\n",
      "iteration 479, error is 0.008035323582589626\n",
      "\n",
      "\n",
      "iteration 480, error is 0.006747276987880468\n",
      "\n",
      "\n",
      "iteration 481, error is 0.02081700973212719\n",
      "\n",
      "\n",
      "iteration 482, error is 0.01886371709406376\n",
      "\n",
      "\n",
      "iteration 483, error is 0.013456464745104313\n",
      "\n",
      "\n",
      "iteration 484, error is 0.045955970883369446\n",
      "\n",
      "\n",
      "iteration 485, error is 0.018676141276955605\n",
      "\n",
      "\n",
      "iteration 486, error is 0.014897695742547512\n",
      "\n",
      "\n",
      "iteration 487, error is 0.012523415498435497\n",
      "\n",
      "\n",
      "iteration 488, error is 0.011751300655305386\n",
      "\n",
      "\n",
      "iteration 489, error is 0.004536038730293512\n",
      "\n",
      "\n",
      "iteration 490, error is 0.004127070307731628\n",
      "\n",
      "\n",
      "iteration 491, error is 0.01052954699844122\n",
      "\n",
      "\n",
      "iteration 492, error is 0.011627493426203728\n",
      "\n",
      "\n",
      "iteration 493, error is 0.05860144644975662\n",
      "\n",
      "\n",
      "iteration 494, error is 0.05571238696575165\n",
      "\n",
      "\n",
      "iteration 495, error is 0.015329857356846333\n",
      "\n",
      "\n",
      "iteration 496, error is 0.010851668193936348\n",
      "\n",
      "\n",
      "iteration 497, error is 0.003442635526880622\n",
      "\n",
      "\n",
      "iteration 498, error is 0.008624473586678505\n",
      "\n",
      "\n",
      "iteration 499, error is 0.01094408705830574\n",
      "\n",
      "\n",
      "iteration 500, error is 0.005015171132981777\n",
      "\n",
      "\n",
      "iteration 501, error is 0.011183934286236763\n",
      "\n",
      "\n",
      "iteration 502, error is 0.00855738203972578\n",
      "\n",
      "\n",
      "iteration 503, error is 0.018588505685329437\n",
      "\n",
      "\n",
      "iteration 504, error is 0.009230978786945343\n",
      "\n",
      "\n",
      "iteration 505, error is 0.007431126199662685\n",
      "\n",
      "\n",
      "iteration 506, error is 0.0037878230214118958\n",
      "\n",
      "\n",
      "iteration 507, error is 0.005108493845909834\n",
      "\n",
      "\n",
      "iteration 508, error is 0.005036503542214632\n",
      "\n",
      "\n",
      "iteration 509, error is 0.00479222321882844\n",
      "\n",
      "\n",
      "iteration 510, error is 0.0046855066902935505\n",
      "\n",
      "\n",
      "iteration 511, error is 0.005260811652988195\n",
      "\n",
      "\n",
      "iteration 512, error is 0.010187494568526745\n",
      "\n",
      "\n",
      "iteration 513, error is 0.007824592292308807\n",
      "\n",
      "\n",
      "iteration 514, error is 0.008283480070531368\n",
      "\n",
      "\n",
      "iteration 515, error is 0.0073770154267549515\n",
      "\n",
      "\n",
      "iteration 516, error is 0.007181740365922451\n",
      "\n",
      "\n",
      "iteration 517, error is 0.010575260035693645\n",
      "\n",
      "\n",
      "iteration 518, error is 0.020503344014286995\n",
      "\n",
      "\n",
      "iteration 519, error is 0.01752132549881935\n",
      "\n",
      "\n",
      "iteration 520, error is 0.01739286258816719\n",
      "\n",
      "\n",
      "iteration 521, error is 0.002157144248485565\n",
      "\n",
      "\n",
      "iteration 522, error is 0.004022682085633278\n",
      "\n",
      "\n",
      "iteration 523, error is 0.002830012934282422\n",
      "\n",
      "\n",
      "iteration 524, error is 0.002804382471367717\n",
      "\n",
      "\n",
      "iteration 525, error is 0.012122047133743763\n",
      "\n",
      "\n",
      "iteration 526, error is 0.008726803585886955\n",
      "\n",
      "\n",
      "iteration 527, error is 0.023162024095654488\n",
      "\n",
      "\n",
      "iteration 528, error is 0.01570839434862137\n",
      "\n",
      "\n",
      "iteration 529, error is 0.008318409323692322\n",
      "\n",
      "\n",
      "iteration 530, error is 0.004879464395344257\n",
      "\n",
      "\n",
      "iteration 531, error is 0.0060759480111300945\n",
      "\n",
      "\n",
      "iteration 532, error is 0.013050731271505356\n",
      "\n",
      "\n",
      "iteration 533, error is 0.00798273179680109\n",
      "\n",
      "\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "iteration 534, error is 0.009343817830085754\n",
      "\n",
      "\n",
      "iteration 535, error is 0.010874216444790363\n",
      "\n",
      "\n",
      "iteration 536, error is 0.007011845242232084\n",
      "\n",
      "\n",
      "iteration 537, error is 0.007091629784554243\n",
      "\n",
      "\n",
      "iteration 538, error is 0.013121921569108963\n",
      "\n",
      "\n",
      "iteration 539, error is 0.013648641295731068\n",
      "\n",
      "\n",
      "iteration 540, error is 0.015660736709833145\n",
      "\n",
      "\n",
      "iteration 541, error is 0.013588733971118927\n",
      "\n",
      "\n",
      "iteration 542, error is 0.002404746599495411\n",
      "\n",
      "\n",
      "iteration 543, error is 0.01658955216407776\n",
      "\n",
      "\n",
      "iteration 544, error is 0.016823366284370422\n",
      "\n",
      "\n",
      "iteration 545, error is 0.020295538008213043\n",
      "\n",
      "\n",
      "iteration 546, error is 0.017449969425797462\n",
      "\n",
      "\n",
      "iteration 547, error is 0.01216178573668003\n",
      "\n",
      "\n",
      "iteration 548, error is 0.012678788043558598\n",
      "\n",
      "\n",
      "iteration 549, error is 0.03431859239935875\n",
      "\n",
      "\n",
      "iteration 550, error is 0.01614546589553356\n",
      "\n",
      "\n",
      "iteration 551, error is 0.01799694076180458\n",
      "\n",
      "\n",
      "iteration 552, error is 0.020288337022066116\n",
      "\n",
      "\n",
      "iteration 553, error is 0.008455460891127586\n",
      "\n",
      "\n",
      "iteration 554, error is 0.018888549879193306\n",
      "\n",
      "\n",
      "iteration 555, error is 0.02329174056649208\n",
      "\n",
      "\n",
      "iteration 556, error is 0.017182068899273872\n",
      "\n",
      "\n",
      "iteration 557, error is 0.028184108436107635\n",
      "\n",
      "\n",
      "iteration 558, error is 0.02094895765185356\n",
      "\n",
      "\n",
      "iteration 559, error is 0.011112426407635212\n",
      "\n",
      "\n",
      "iteration 560, error is 0.016029877588152885\n",
      "\n",
      "\n",
      "iteration 561, error is 0.004362242761999369\n",
      "\n",
      "\n",
      "iteration 562, error is 0.0038594899233430624\n",
      "\n",
      "\n",
      "iteration 563, error is 0.008982227183878422\n",
      "\n",
      "\n",
      "iteration 564, error is 0.007068836595863104\n",
      "\n",
      "\n",
      "iteration 565, error is 0.012878932990133762\n",
      "\n",
      "\n",
      "iteration 566, error is 0.018490800634026527\n",
      "\n",
      "\n",
      "iteration 567, error is 0.04979097843170166\n",
      "\n",
      "\n",
      "iteration 568, error is 0.0479513555765152\n",
      "\n",
      "\n",
      "iteration 569, error is 0.046579666435718536\n",
      "\n",
      "\n",
      "iteration 570, error is 0.04780915006995201\n",
      "\n",
      "\n",
      "iteration 571, error is 0.021933656185865402\n",
      "\n",
      "\n",
      "iteration 572, error is 0.015770198777318\n",
      "\n",
      "\n",
      "iteration 573, error is 0.013956795446574688\n",
      "\n",
      "\n",
      "iteration 574, error is 0.013436629436910152\n",
      "\n",
      "\n",
      "iteration 575, error is 0.015145951882004738\n",
      "\n",
      "\n",
      "iteration 576, error is 0.027061007916927338\n",
      "\n",
      "\n",
      "iteration 577, error is 0.015658488497138023\n",
      "\n",
      "\n",
      "iteration 578, error is 0.01620069146156311\n",
      "\n",
      "\n",
      "iteration 579, error is 0.012373863719403744\n",
      "\n",
      "\n",
      "iteration 580, error is 0.008235775865614414\n",
      "\n",
      "\n",
      "iteration 581, error is 0.010165671817958355\n",
      "\n",
      "\n",
      "iteration 582, error is 0.011684506200253963\n",
      "\n",
      "\n",
      "iteration 583, error is 0.011763329617679119\n",
      "\n",
      "\n",
      "iteration 584, error is 0.01010899432003498\n",
      "\n",
      "\n",
      "iteration 585, error is 0.015410763211548328\n",
      "\n",
      "\n",
      "iteration 586, error is 0.018741998821496964\n",
      "\n",
      "\n",
      "iteration 587, error is 0.007154268678277731\n",
      "\n",
      "\n",
      "iteration 588, error is 0.007711578626185656\n",
      "\n",
      "\n",
      "iteration 589, error is 0.020158519968390465\n",
      "\n",
      "\n",
      "iteration 590, error is 0.016858883202075958\n",
      "\n",
      "\n",
      "iteration 591, error is 0.011096859350800514\n",
      "\n",
      "\n",
      "iteration 592, error is 0.01503700390458107\n",
      "\n",
      "\n",
      "iteration 593, error is 0.014958425424993038\n",
      "\n",
      "\n",
      "iteration 594, error is 0.015246900729835033\n",
      "\n",
      "\n",
      "iteration 595, error is 0.013938020914793015\n",
      "\n",
      "\n",
      "iteration 596, error is 0.011052860878407955\n",
      "\n",
      "\n",
      "iteration 597, error is 0.02406005561351776\n",
      "\n",
      "\n",
      "iteration 598, error is 0.016455957666039467\n",
      "\n",
      "\n",
      "iteration 599, error is 0.02277250401675701\n",
      "\n",
      "\n",
      "iteration 600, error is 0.034393180161714554\n",
      "\n",
      "\n",
      "iteration 601, error is 0.047998473048210144\n",
      "\n",
      "\n",
      "iteration 602, error is 0.04867561534047127\n",
      "\n",
      "\n",
      "iteration 603, error is 0.04773211479187012\n",
      "\n",
      "\n",
      "iteration 604, error is 0.045013178139925\n",
      "\n",
      "\n",
      "iteration 605, error is 0.045967716723680496\n",
      "\n",
      "\n",
      "iteration 606, error is 0.04689159244298935\n",
      "\n",
      "\n",
      "iteration 607, error is 0.046456243842840195\n",
      "\n",
      "\n",
      "iteration 608, error is 0.045443639159202576\n",
      "\n",
      "\n",
      "iteration 609, error is 0.045844096690416336\n",
      "\n",
      "\n",
      "iteration 610, error is 0.0449618361890316\n",
      "\n",
      "\n",
      "iteration 611, error is 0.041657354682683945\n",
      "\n",
      "\n",
      "iteration 612, error is 0.04297524690628052\n",
      "\n",
      "\n",
      "iteration 613, error is 0.04383189603686333\n",
      "\n",
      "\n",
      "iteration 614, error is 0.03533170744776726\n",
      "\n",
      "\n",
      "iteration 615, error is 0.04067911580204964\n",
      "\n",
      "\n",
      "iteration 616, error is 0.04281103238463402\n",
      "\n",
      "\n",
      "iteration 617, error is 0.04232793301343918\n",
      "\n",
      "\n",
      "iteration 618, error is 0.04091552272439003\n",
      "\n",
      "\n",
      "iteration 619, error is 0.039624109864234924\n",
      "\n",
      "\n",
      "iteration 620, error is 0.040823448449373245\n",
      "\n",
      "\n",
      "iteration 621, error is 0.04037775844335556\n",
      "\n",
      "\n",
      "iteration 622, error is 0.03954566270112991\n",
      "\n",
      "\n",
      "iteration 623, error is 0.039351753890514374\n",
      "\n",
      "\n",
      "iteration 624, error is 0.038223691284656525\n",
      "\n",
      "\n",
      "iteration 625, error is 0.038651980459690094\n",
      "\n",
      "\n",
      "iteration 626, error is 0.039445050060749054\n",
      "\n",
      "\n",
      "iteration 627, error is 0.03576074540615082\n",
      "\n",
      "\n",
      "iteration 628, error is 0.037262558937072754\n",
      "\n",
      "\n",
      "iteration 629, error is 0.03105243481695652\n",
      "\n",
      "\n",
      "iteration 630, error is 0.017730820924043655\n",
      "\n",
      "\n",
      "iteration 631, error is 0.011687991209328175\n",
      "\n",
      "\n",
      "iteration 632, error is 0.012635725550353527\n",
      "\n",
      "\n",
      "iteration 633, error is 0.011580143123865128\n",
      "\n",
      "\n",
      "iteration 634, error is 0.015442265197634697\n",
      "\n",
      "\n",
      "iteration 635, error is 0.014902467839419842\n",
      "\n",
      "\n",
      "iteration 636, error is 0.01344013586640358\n",
      "\n",
      "\n",
      "iteration 637, error is 0.01318370457738638\n",
      "\n",
      "\n",
      "iteration 638, error is 0.014147060923278332\n",
      "\n",
      "\n",
      "iteration 639, error is 0.01064001489430666\n",
      "\n",
      "\n",
      "iteration 640, error is 0.012354156002402306\n",
      "\n",
      "\n",
      "iteration 641, error is 0.015123246237635612\n",
      "\n",
      "\n",
      "iteration 642, error is 0.012356512248516083\n",
      "\n",
      "\n",
      "iteration 643, error is 0.018487267196178436\n",
      "\n",
      "\n",
      "iteration 644, error is 0.008260468952357769\n",
      "\n",
      "\n",
      "iteration 645, error is 0.004295194987207651\n",
      "\n",
      "\n",
      "iteration 646, error is 0.016741817817091942\n",
      "\n",
      "\n",
      "iteration 647, error is 0.011596664786338806\n",
      "\n",
      "\n",
      "iteration 648, error is 0.017451805993914604\n",
      "\n",
      "\n",
      "iteration 649, error is 0.0188310369849205\n",
      "\n",
      "\n",
      "iteration 650, error is 0.020713824778795242\n",
      "\n",
      "\n",
      "iteration 651, error is 0.018318679183721542\n",
      "\n",
      "\n",
      "iteration 652, error is 0.009294711984694004\n",
      "\n",
      "\n",
      "iteration 653, error is 0.010050468146800995\n",
      "\n",
      "\n",
      "iteration 654, error is 0.01646421104669571\n",
      "\n",
      "\n",
      "iteration 655, error is 0.01187922339886427\n",
      "\n",
      "\n",
      "iteration 656, error is 0.01329648494720459\n",
      "\n",
      "\n",
      "iteration 657, error is 0.009198753163218498\n",
      "\n",
      "\n",
      "iteration 658, error is 0.013023430481553078\n",
      "\n",
      "\n",
      "iteration 659, error is 0.011227892711758614\n",
      "\n",
      "\n",
      "iteration 660, error is 0.032023314386606216\n",
      "\n",
      "\n",
      "iteration 661, error is 0.02107151970267296\n",
      "\n",
      "\n",
      "iteration 662, error is 0.010326403193175793\n",
      "\n",
      "\n",
      "iteration 663, error is 0.010469033382833004\n",
      "\n",
      "\n",
      "iteration 664, error is 0.008699245750904083\n",
      "\n",
      "\n",
      "iteration 665, error is 0.008599967695772648\n",
      "\n",
      "\n",
      "iteration 666, error is 0.01259627379477024\n",
      "\n",
      "\n",
      "iteration 667, error is 0.010312498547136784\n",
      "\n",
      "\n",
      "iteration 668, error is 0.008486843667924404\n",
      "\n",
      "\n",
      "iteration 669, error is 0.01836400106549263\n",
      "\n",
      "\n",
      "iteration 670, error is 0.016922499984502792\n",
      "\n",
      "\n",
      "iteration 671, error is 0.013992203399538994\n",
      "\n",
      "\n",
      "iteration 672, error is 0.012913472950458527\n",
      "\n",
      "\n",
      "iteration 673, error is 0.022990602999925613\n",
      "\n",
      "\n",
      "iteration 674, error is 0.01799388788640499\n",
      "\n",
      "\n",
      "iteration 675, error is 0.014425847679376602\n",
      "\n",
      "\n",
      "iteration 676, error is 0.010639633052051067\n",
      "\n",
      "\n",
      "iteration 677, error is 0.012000597082078457\n",
      "\n",
      "\n",
      "iteration 678, error is 0.011591608636081219\n",
      "\n",
      "\n",
      "iteration 679, error is 0.01323468703776598\n",
      "\n",
      "\n",
      "iteration 680, error is 0.002273461315780878\n",
      "\n",
      "\n",
      "iteration 681, error is 0.010502063669264317\n",
      "\n",
      "\n",
      "iteration 682, error is 0.008194774389266968\n",
      "\n",
      "\n",
      "iteration 683, error is 0.00966839399188757\n",
      "\n",
      "\n",
      "iteration 684, error is 0.008591154590249062\n",
      "\n",
      "\n",
      "iteration 685, error is 0.007346924394369125\n",
      "\n",
      "\n",
      "iteration 686, error is 0.011008352041244507\n",
      "\n",
      "\n",
      "iteration 687, error is 0.005777857732027769\n",
      "\n",
      "\n",
      "iteration 688, error is 0.011276799254119396\n",
      "\n",
      "\n",
      "iteration 689, error is 0.00948877353221178\n",
      "\n",
      "\n",
      "iteration 690, error is 0.0072552235797047615\n",
      "\n",
      "\n",
      "iteration 691, error is 0.00811055488884449\n",
      "\n",
      "\n",
      "iteration 692, error is 0.00940084457397461\n",
      "\n",
      "\n",
      "iteration 693, error is 0.008477289229631424\n",
      "\n",
      "\n",
      "iteration 694, error is 0.009843767620623112\n",
      "\n",
      "\n",
      "iteration 695, error is 0.01647072285413742\n",
      "\n",
      "\n",
      "iteration 696, error is 0.010521105490624905\n",
      "\n",
      "\n",
      "iteration 697, error is 0.014413095079362392\n",
      "\n",
      "\n",
      "iteration 698, error is 0.006766661070287228\n",
      "\n",
      "\n",
      "iteration 699, error is 0.01367446593940258\n",
      "\n",
      "\n",
      "iteration 700, error is 0.010619848035275936\n",
      "\n",
      "\n",
      "iteration 701, error is 0.014959954656660557\n",
      "\n",
      "\n",
      "iteration 702, error is 0.010898694396018982\n",
      "\n",
      "\n",
      "iteration 703, error is 0.0214103814214468\n",
      "\n",
      "\n",
      "iteration 704, error is 0.009838069789111614\n",
      "\n",
      "\n",
      "iteration 705, error is 0.003812575712800026\n",
      "\n",
      "\n",
      "iteration 706, error is 0.0024490621872246265\n",
      "\n",
      "\n",
      "iteration 707, error is 0.008839183486998081\n",
      "\n",
      "\n",
      "iteration 708, error is 0.011504157446324825\n",
      "\n",
      "\n",
      "iteration 709, error is 0.019007323309779167\n",
      "\n",
      "\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "iteration 710, error is 0.014811494387686253\n",
      "\n",
      "\n",
      "iteration 711, error is 0.021702375262975693\n",
      "\n",
      "\n",
      "iteration 712, error is 0.01525106094777584\n",
      "\n",
      "\n",
      "iteration 713, error is 0.010489271953701973\n",
      "\n",
      "\n",
      "iteration 714, error is 0.013384521938860416\n",
      "\n",
      "\n",
      "iteration 715, error is 0.011139350943267345\n",
      "\n",
      "\n",
      "iteration 716, error is 0.008056677877902985\n",
      "\n",
      "\n",
      "iteration 717, error is 0.012529213912785053\n",
      "\n",
      "\n",
      "iteration 718, error is 0.010746768675744534\n",
      "\n",
      "\n",
      "iteration 719, error is 0.00834980234503746\n",
      "\n",
      "\n",
      "iteration 720, error is 0.009885474108159542\n",
      "\n",
      "\n",
      "iteration 721, error is 0.012766096740961075\n",
      "\n",
      "\n",
      "iteration 722, error is 0.016692055389285088\n",
      "\n",
      "\n",
      "iteration 723, error is 0.027948124334216118\n",
      "\n",
      "\n",
      "iteration 724, error is 0.018812399357557297\n",
      "\n",
      "\n",
      "iteration 725, error is 0.004611284006386995\n",
      "\n",
      "\n",
      "iteration 726, error is 0.004535591695457697\n",
      "\n",
      "\n",
      "iteration 727, error is 0.006396890617907047\n",
      "\n",
      "\n",
      "iteration 728, error is 0.013928426429629326\n",
      "\n",
      "\n",
      "iteration 729, error is 0.014256566762924194\n",
      "\n",
      "\n",
      "iteration 730, error is 0.0037665781565010548\n",
      "\n",
      "\n",
      "iteration 731, error is 0.005029084626585245\n",
      "\n",
      "\n",
      "iteration 732, error is 0.02687927521765232\n",
      "\n",
      "\n",
      "iteration 733, error is 0.015994757413864136\n",
      "\n",
      "\n",
      "iteration 734, error is 0.01239972747862339\n",
      "\n",
      "\n",
      "iteration 735, error is 0.01637701690196991\n",
      "\n",
      "\n",
      "iteration 736, error is 0.008346693590283394\n",
      "\n",
      "\n",
      "iteration 737, error is 0.008555613458156586\n",
      "\n",
      "\n",
      "iteration 738, error is 0.009840428829193115\n",
      "\n",
      "\n",
      "iteration 739, error is 0.008563081733882427\n",
      "\n",
      "\n",
      "iteration 740, error is 0.010413328185677528\n",
      "\n",
      "\n",
      "iteration 741, error is 0.013490289449691772\n",
      "\n",
      "\n",
      "iteration 742, error is 0.007423810660839081\n",
      "\n",
      "\n",
      "iteration 743, error is 0.010790848173201084\n",
      "\n",
      "\n",
      "iteration 744, error is 0.01158613245934248\n",
      "\n",
      "\n",
      "iteration 745, error is 0.016689788550138474\n",
      "\n",
      "\n",
      "iteration 746, error is 0.01398993656039238\n",
      "\n",
      "\n",
      "iteration 747, error is 0.016327371820807457\n",
      "\n",
      "\n",
      "iteration 748, error is 0.015341593883931637\n",
      "\n",
      "\n",
      "iteration 749, error is 0.011345931328833103\n",
      "\n",
      "\n",
      "iteration 750, error is 0.011679335497319698\n",
      "\n",
      "\n",
      "iteration 751, error is 0.01494377851486206\n",
      "\n",
      "\n",
      "iteration 752, error is 0.01978948526084423\n",
      "\n",
      "\n",
      "iteration 753, error is 0.014634755440056324\n",
      "\n",
      "\n",
      "iteration 754, error is 0.005335457623004913\n",
      "\n",
      "\n",
      "iteration 755, error is 0.009590117260813713\n",
      "\n",
      "\n",
      "iteration 756, error is 0.015741271898150444\n",
      "\n",
      "\n",
      "iteration 757, error is 0.01823308691382408\n",
      "\n",
      "\n",
      "iteration 758, error is 0.014474456198513508\n",
      "\n",
      "\n",
      "iteration 759, error is 0.012569889426231384\n",
      "\n",
      "\n",
      "iteration 760, error is 0.017905443906784058\n",
      "\n",
      "\n",
      "iteration 761, error is 0.011144587770104408\n",
      "\n",
      "\n",
      "iteration 762, error is 0.00988773163408041\n",
      "\n",
      "\n",
      "iteration 763, error is 0.016229651868343353\n",
      "\n",
      "\n",
      "iteration 764, error is 0.014142509549856186\n",
      "\n",
      "\n",
      "iteration 765, error is 0.01561114750802517\n",
      "\n",
      "\n",
      "iteration 766, error is 0.020375404506921768\n",
      "\n",
      "\n",
      "iteration 767, error is 0.004094461910426617\n",
      "\n",
      "\n",
      "iteration 768, error is 0.0028449108358472586\n",
      "\n",
      "\n",
      "iteration 769, error is 0.0022700766567140818\n",
      "\n",
      "\n",
      "iteration 770, error is 0.015094909816980362\n",
      "\n",
      "\n",
      "iteration 771, error is 0.01285267062485218\n",
      "\n",
      "\n",
      "iteration 772, error is 0.022853003814816475\n",
      "\n",
      "\n",
      "iteration 773, error is 0.014489972032606602\n",
      "\n",
      "\n",
      "iteration 774, error is 0.014047881588339806\n",
      "\n",
      "\n",
      "iteration 775, error is 0.017506394535303116\n",
      "\n",
      "\n",
      "iteration 776, error is 0.012167035602033138\n",
      "\n",
      "\n",
      "iteration 777, error is 0.014255928806960583\n",
      "\n",
      "\n",
      "iteration 778, error is 0.00253130029886961\n",
      "\n",
      "\n",
      "iteration 779, error is 0.001318659633398056\n",
      "\n",
      "\n",
      "iteration 780, error is 0.001100886263884604\n",
      "\n",
      "\n",
      "iteration 781, error is 0.0029940728563815355\n",
      "\n",
      "\n",
      "iteration 782, error is 0.005013143643736839\n",
      "\n",
      "\n",
      "iteration 783, error is 0.0046022748574614525\n",
      "\n",
      "\n",
      "iteration 784, error is 0.003858739510178566\n",
      "\n",
      "\n",
      "iteration 785, error is 0.0024658716283738613\n",
      "\n",
      "\n",
      "iteration 786, error is 0.0017388018313795328\n",
      "\n",
      "\n",
      "iteration 787, error is 0.006308877374976873\n",
      "\n",
      "\n",
      "iteration 788, error is 0.00734808249399066\n",
      "\n",
      "\n",
      "iteration 789, error is 0.009281634353101254\n",
      "\n",
      "\n",
      "iteration 790, error is 0.00980195589363575\n",
      "\n",
      "\n",
      "iteration 791, error is 0.008279998786747456\n",
      "\n",
      "\n",
      "iteration 792, error is 0.012909670360386372\n",
      "\n",
      "\n",
      "iteration 793, error is 0.01023448258638382\n",
      "\n",
      "\n",
      "iteration 794, error is 0.00879523903131485\n",
      "\n",
      "\n",
      "iteration 795, error is 0.008449727669358253\n",
      "\n",
      "\n",
      "iteration 796, error is 0.007705586962401867\n",
      "\n",
      "\n",
      "iteration 797, error is 0.007931673899292946\n",
      "\n",
      "\n",
      "iteration 798, error is 0.007209989707916975\n",
      "\n",
      "\n",
      "iteration 799, error is 0.017126990482211113\n",
      "\n",
      "\n",
      "iteration 800, error is 0.014121994376182556\n",
      "\n",
      "\n",
      "iteration 801, error is 0.028538914397358894\n",
      "\n",
      "\n",
      "iteration 802, error is 0.02249276638031006\n",
      "\n",
      "\n",
      "iteration 803, error is 0.019548354670405388\n",
      "\n",
      "\n",
      "iteration 804, error is 0.026297584176063538\n",
      "\n",
      "\n",
      "iteration 805, error is 0.016557667404413223\n",
      "\n",
      "\n",
      "iteration 806, error is 0.01409898605197668\n",
      "\n",
      "\n",
      "iteration 807, error is 0.008570794016122818\n",
      "\n",
      "\n",
      "iteration 808, error is 0.010795908980071545\n",
      "\n",
      "\n",
      "iteration 809, error is 0.007288954686373472\n",
      "\n",
      "\n",
      "iteration 810, error is 0.028065430000424385\n",
      "\n",
      "\n",
      "iteration 811, error is 0.015472463332116604\n",
      "\n",
      "\n",
      "iteration 812, error is 0.010214888490736485\n",
      "\n",
      "\n",
      "iteration 813, error is 0.007009158376604319\n",
      "\n",
      "\n",
      "iteration 814, error is 0.004696967080235481\n",
      "\n",
      "\n",
      "iteration 815, error is 0.007579510100185871\n",
      "\n",
      "\n",
      "iteration 816, error is 0.016786644235253334\n",
      "\n",
      "\n",
      "iteration 817, error is 0.024017056450247765\n",
      "\n",
      "\n",
      "iteration 818, error is 0.02613253705203533\n",
      "\n",
      "\n",
      "iteration 819, error is 0.005838687531650066\n",
      "\n",
      "\n",
      "iteration 820, error is 0.0054562767036259174\n",
      "\n",
      "\n",
      "iteration 821, error is 0.003616421250626445\n",
      "\n",
      "\n",
      "iteration 822, error is 0.0035732074175029993\n",
      "\n",
      "\n",
      "iteration 823, error is 0.006670631002634764\n",
      "\n",
      "\n",
      "iteration 824, error is 0.011782054789364338\n",
      "\n",
      "\n",
      "iteration 825, error is 0.00690894341096282\n",
      "\n",
      "\n",
      "iteration 826, error is 0.006717515643686056\n",
      "\n",
      "\n",
      "iteration 827, error is 0.0033766862470656633\n",
      "\n",
      "\n",
      "iteration 828, error is 0.0034611832816153765\n",
      "\n",
      "\n",
      "Stopping iteration - no more input data\n"
     ]
    }
   ],
   "source": [
    "#Cell used to training\n",
    "\n",
    "learning_rate = 0.001\n",
    "\n",
    "#Size of our input image. e.g. number of features\n",
    "number_of_features = 40 * 80\n",
    "\n",
    "steps_num = 10000\n",
    "\n",
    "#input data\n",
    "X = tf.placeholder(tf.float32, [None, memory_size, number_of_features])\n",
    "#data label\n",
    "Y = tf.placeholder(tf.float32, [None, memory_size, number_of_features])\n",
    "\n",
    "#RNN cells\n",
    "cell = tf.contrib.rnn.DropoutWrapper(tf.contrib.rnn.BasicRNNCell(number_of_features, activation=tf.sigmoid), input_keep_prob=0.7, output_keep_prob=1, state_keep_prob=1)\n",
    "\n",
    "outputs, states = tf.nn.dynamic_rnn(cell, X, dtype=tf.float32)\n",
    "\n",
    "#loss\n",
    "loss = tf.losses.mean_squared_error(outputs, Y)\n",
    "\n",
    "optimizer = tf.train.AdamOptimizer()\n",
    "\n",
    "train = optimizer.minimize(loss)\n",
    "\n",
    "init = tf.global_variables_initializer()\n",
    "\n",
    "saver = tf.train.Saver()\n",
    "\n",
    "with tf.Session() as sess:\n",
    "    sess.run(init)\n",
    "    for iteration in range(steps_num):\n",
    "        try:\n",
    "            train_data, train_labels = next(input_data_iter), next(input_label_iter)\n",
    "        except StopIteration:\n",
    "            print('Stopping iteration - no more input data')\n",
    "            break\n",
    "        sess.run(train, feed_dict = {X:train_data, Y:train_labels})\n",
    "        error = loss.eval( feed_dict = {X:train_data, Y:train_labels})\n",
    "        print(\"iteration {}, error is {}\".format(iteration, error))\n",
    "        print(\"\\n\")\n",
    "    saver.save(sess, save_path=\"./tmp/rnn_model_RNN_SIGMOID/rnn_model\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/spencer/Documents/MachineLearning/project_venv/lib/python3.5/site-packages/skimage/transform/_warps.py:84: UserWarning: The default mode, 'constant', will be changed to 'reflect' in skimage 0.15.\n",
      "  warn(\"The default mode, 'constant', will be changed to 'reflect' in \"\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "75\n",
      "INFO:tensorflow:Restoring parameters from ./tmp/rnn_model_RNN_SIGMOID/rnn_model\n",
      "[1.93212047e-01 1.16566895e-01 3.71372792e-02 0.00000000e+00\n",
      " 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00\n",
      " 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00\n",
      " 1.53943457e-02 6.13075811e-02 7.38199633e-02 6.23157695e-02\n",
      " 2.60118162e-02 1.19286706e-04 0.00000000e+00 0.00000000e+00]\n",
      "[0.332826   0.34917971 0.34764782 0.33655638 0.3094935  0.33386293\n",
      " 0.30703005 0.28144297 0.2683692  0.23462853 0.23298761 0.20371754\n",
      " 0.14964116 0.17801803 0.1332026  0.10041757 0.08154568 0.06559247\n",
      " 0.06953181 0.06949193]\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXQAAADKCAYAAAC11LviAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvhp/UCwAAFPJJREFUeJzt3X2sZHV9x/HPZ+Y+7u7dZWEXXFgqVImGNmWxFCGaRrFYShofEtNIm4Y/SLCJJpqYVmiTVpM20aRK/aMxwYqSpvWhqIUQqiLSNDYNsuiKC4igou4GdgF32Qd378PMt3/Mue79/c7cnbnzdGcP71dyc+/vzJk5X3bmfjn3+zvn93VECABw5qutdwAAgMEgoQNARZDQAaAiSOgAUBEkdACoCBI6AFQECR0AKoKEDgAV0VdCt32d7SdtP237lkEFBQBYO/d6p6jtuqQfSbpW0j5JD0u6ISIeX+05U56OGW88tYGbVAGgo6M69EJEbO+030Qfx7hS0tMR8RNJsv0FSW+XtGpCn/FGXTXxh78ex9JSH4cHgJeHb8ZdP+tmv35KLhdI+sWK8b5iW8L2zbZ32969GPN9HA4AcDpDnxSNiNsj4oqIuGLS08M+HAC8bPVTctkv6cIV453FtlV5alq1i155anzkWPJ48/BLpec0FxazDY21xgkAY8PT5RPb2uxMMm4eP5HusNDda/dzhv6wpEtsX2x7StK7Jd3Tx+sBAPrQ8xl6RCzZfp+kr0uqS7ojIh4bWGQAgDXpp+SiiLhP0n0DigUA0Ie+Evrahbx0qga+dOBg9jAXpgOotpgvX+3XaLOtF9z6DwAVQUIHgIogoQNARZDQAaAiRjsp2mxKJ06eGjMJCgADwxk6AFQECR0AKoKEDgAVMeIbi0TdHACGhDN0AKgIEjoAVERfJRfbz0g6KqkhaSkirhhEUACAtRtEDf3NEfFCV3uG1GtTagDA6VFyAYCK6Dehh6Rv2H7E9s3tdljZJHqheaLdLgCAAei35PLGiNhv+1xJ99v+YUT8z8odIuJ2SbdL0pbJc6m3AMCQ9HWGHhH7i+8HJX1V0pUdn9SMU18AgIHpOaHb3mh7bvlnSW+VtHdQgQEA1qafkst5kr5qe/l1/j0ivjaQqAAAa9ZzQo+In0i6bICxAAD6MPIm0YrmaA8JAC8TXIcOABVBQgeAiiChA0BFkNABoCJI6ABQESR0AKgIEjoAVAQJHQAqgibRAFARnKEDQEWQ0AGgIjomdNt32D5oe++KbWfbvt/2U8X3rcMNEwDQSTdn6J+TdF227RZJD0TEJZIeKMYAgHXUMaEXLeV+mW1+u6Q7i5/vlPSOAccFAFijXq9yOS8ini1+fk6tZhdtFc2jb5akmdqmHg8HAOik70nRiAhJq16LGBG3R8QVEXHFVG2m38MBAFbRa0I/YHuHJBXfDw4uJABAL3pN6PdIurH4+UZJdw8mHABAr7q5bPHzkv5P0mts77N9k6SPSrrW9lOS/qAYAwDWUcdJ0Yi4YZWH3jLgWAAAfeBOUQCoCBI6AFQECR0AKoKEDgAVQUIHgIogoQNARZDQAaAiSOgAUBEkdACoiNE2iQ5JTZpEA8AwcIYOABVBQgeAiui1SfSHbe+3vaf4un64YQIAOum1SbQk3RYRu4qv+wYbFgBgrXptEg0AGDP91NDfZ/vRoiSzdbWdbN9se7ft3Qtxso/DAQBOp9eE/ilJr5K0S9Kzkj6+2o5Jk2jTJBoAhqWnhB4RByKiERFNSZ+WdOVgwwIArFVPCd32jhXDd0rau9q+AIDR6HinaNEk+k2SttneJ+nvJL3J9i617v18RtJ7hhgjAKALvTaJ/swQYgEA9IE7RQGgIkjoAFARJHQAqAgSOgBUBAkdACpitA0uAGA1tXoydM3JOJaWRhnNGYkzdACoCBI6AFQECR0AKoKEDgAVQUIHgIropqfohbYftP247cdsv7/Yfrbt+20/VXxftckFAGD4ujlDX5L0wYi4VNJVkt5r+1JJt0h6ICIukfRAMQYArJNuVlt8Vq2uRIqIo7afkHSBpLertayuJN0p6b8lfajjEaPZW6QAqq3ZSIakirVbUw3d9kWSLpf0kKTzimQvSc9JOm+gkQEA1qTrhG57k6QvS/pARBxZ+VhEhFrNLto9b0WT6BN9BQsAWF1XCd32pFrJ/N8i4ivF5gPLreiK7wfbPTdtEj07iJgBAG1004LOanUoeiIiPrHioXsk3Sjpo8X3u4cSITAEnpxKxzPTpX3i5Hw6XlwYakxAv7pZnOsNkv5c0g9s7ym2/bVaifxLtm+S9DNJfzKcEAEA3ejmKpdvS/IqD79lsOEAAHrFnaIAUBGsh46Bqs3MlLaV6tPN9IKo1kVSK8Z57bqRXp8sSZ5MP7q12fS43rI5PeTcxvQ1p9O1t8PlP0Jrh4+nG148nAwbhw6VngOsJ87QAaAiSOgAUBEkdACoCBI6AFQEk6LoiyfSj1A+GSmVJ0VjajJ9PJvgdDZJqkZ5laaYTW8Mak6lr9HIJj0bM9kkaD2dBHWbhSumsnE9m8z10aPpa9LEGOuMM3QAqAgSOgBUBAkdACqCGjr64um0Pu4N5RU1m3PptqXN6U1Ai3NpTb05nda3mxPlm34i25TXwPPHo3b6mnl9oVynr8+ncclz6ePN89M4X0xvNGpmNXZg2DhDB4CK6KdJ9Idt77e9p/i6fvjhAgBW003JZblJ9Hdtz0l6xPb9xWO3RcQ/Di88AEC3+mkSDUi19I+8mCx/pCK/RnxDOl7akL7G0kznGnpeA3cjOjyejmtL2f5tLiHPF+zK427u2JqMJ6azphnPlBtixPx8aRswKP00iZak99l+1PYdtreu+kQAwND10yT6U5JeJWmXWmfwH1/leTSJBoAR6LlJdEQciIhGRDQlfVrSle2eS5NoABiNnptE295R1Ncl6Z2S9g4nRIwzZ3XmmJks7dOYTbctzNWzcV5DT5/fnFytA+KKOLILz2sLaY28npeus5ds1lXSnEzjjuz0Jx9PnpXW0DcuLJZec+mZn2cv0mYRGaBH/TSJvsH2Lkkh6RlJ7xlKhACArvTTJPq+wYcDAOgVd4oCQEWwlgv6kjd47uo59XyhlXRYy0rPbpaPUbo2Pa9vZzXxZlbaX8pq/260aRLdyBeIyXbInpJfT984J137RZLqL6bbGkeOlPYBesUZOgBUBAkdACqChA4AFUFCB4CKYFIU/WmWG0N0fEr2qcsnMDuNpfIkZ2Sv6Wa2wFe2f37jUa3N4lzNbKK0li3wVZokTXt9aH5b+c7o2Ze2pRuYFMUAcYYOABVBQgeAiiChA0BFUEPHYNU6nyM4K7vnzSec3+PTZuGJ/DXy+5vyhhWlBhf5MfP6uMp19XpWd5+YP/38Qb54lyQ1N6d1dU+kv4Kx1KaYD3SJM3QAqIhumkTP2P6O7e8XTaI/Umy/2PZDtp+2/UXbU51eCwAwPN2coc9LuiYiLlOrO9F1tq+S9DG1mkS/WtIhSTcNL0wAQCfdLJ8bko4Vw8niKyRdI+lPi+13SvqwWm3pUGGeTi+29mzajaIxU/5ILW1ILyRvTGXNlzs0tMivIW+9RjrO69V5jT2vwzeyDbW8q7TKdfb6YtY040R6kOZk1qhjQ/l86cSOjcl404Hz0ufs2196DtCtblvQ1YvmFgcl3S/px5IOR8TyDM4+SRcMJ0QAQDe6SuhF79Bdknaq1Tv0td0egCbRADAaa7rKJSIOS3pQ0tWSzrK9/Pf1Tklt/1akSTQAjEY3TaK3S1qMiMO2ZyVdq9aE6IOS3iXpC5JulHT3MAPFeKjlNfSZrIY+W/5ILWzOm0Kn9evFTen+zbw+3m4tl3paz87XbslL4qXr0vP1ZJbKF7s7a3DRrpF0+oQsxrwJh6TIzmkar9iajGuHDqevcfx4h4MCp3RzY9EOSXfarqt1Rv+liLjX9uOSvmD77yV9T9JnhhgnAKCDbq5yeVTS5W22/0StejoAYAxwpygAVARruWBNvGVzMm5uSQvgi5va1NDnsuuz00uxS9ehL81mteup8jXiMZ1ty64Zb06lx6yfzGrsWU293XrotYXsNbOaeNSy12zTzDrXmE6fc2LHhmS88fj56ROeeKrjawLLOEMHgIogoQNARZDQAaAiSOgAUBFMimJtsonAyBbjyhfWam3LxtkNOvmkZ2NTuuhVzJa7T0xtSmcsm4303GRxIr07qTmRHrTU4GKxdAjVFrMFvLJ9Jk9kj8/njafbTOZm3TuWZrKbrM5NJ5knfp7OIHOjEU6HM3QAqAgSOgBUBAkdACpi9DV08/+QM0resTlrAp3fXKM299bkDZjr+Q07C226QK/cf7Z818/Oc9JFrPIGFQc3pLXo48fTu5cWj6UffZ8sr7w1efz0ceU3J9UXsoYX023mE+rZHEQ9X6gsjWvyN9Ibjer7D5Res3HkyGnjxMsH2RUAKqKfJtGfs/1T23uKr13DDxcAsJpuSi7LTaKP2Z6U9G3b/1U89pcRcdfwwgMAdKufJtFrZ5WuY8YZJrLGEo20blxbbNNsOW8ukTVwbk6kz8mvOz//nJdKr/nmc3+UjLdNHE3GL2yfS8aPH92RjJ86tD0ZHzqSLpIlSUsvpd0o8sYb+TX3jWb6B2+j3TX5+W9c3rw6W1SsuSE9aH0u6wYiSdTQUeipSXREPFQ89A+2H7V9m+3p07wEAGDIemoSbfu3Jd2qVrPo35N0tqQPtXtu0iS6eXJAYQMAcr02ib4uIp6NlnlJn9Uq3YuSJtG1mXa7AAAGoOcm0bZ3RMSzti3pHZL2dj6cpQmWjzmT1GazOvKmtNa8tDmttC1uLJ8jNKZKm9JjZGumaD59jeML2WIwkk5mC8ScP3koGV849WIyzmvsZ02dSMa7fWHpGL/ckDXAzurbixvSuJuT6bXs+TotktTI/lNiIn88b5qRruUyM1X+/Zk4eiwZc136y1c/TaK/VSR7S9oj6S+GGCcAoIN+mkRfM5SIAAA94U5RAKiI0Ra0azV59lRd0pNpcTUWF/JnYNSytVtq525Lxr+6IFsj5RVpUfjEueW68eJctt759OnXP5/Znta3f2vbc6XXvHpT2jz59dNpzXxrLav9z6briO/b+GQyvmv2stIx/nUxnec/Vt+SjBc3p+dD+Xrp7eYOIr/mPltCppata7OwJf0VXZopn4NtOZo1ln48WzO9WV5PHtXEGToAVAQJHQAqgoQOABVBQgeAihjtpKilmDx1yHo24RZtGuA2DpcXZsLw1LdsTsaxMZ1cbMym5wDzW9NJvJPbyotzLc1lk3Iz6STo1MZ0MvycufRzcNZkOkkqSYvZHTkvNdPjbqml40mns49n19PxpTP7S8e4dHvaTOLhY+mNRgvNbPmiZnaj0XS2CpmkyBpiq54tdnYy/fd11lF76VB50jlm04np+jlnJ+PG88+XnoP1U5ubK23zdHaByLEsF5Z/Bdq/dq9BAQDGCwkdACqChA4AFTHiGrqlqVP1vsbmtD5bO1JejbE+ndUp5+eTYWQNFtTI6rXNch2zo6wRsrJ6q/PGyfVyg2HVs1povihZh+bLpcelUnOJ0n9b9niU9s/qtRPluCNbfCtvsJC3NunUvKK1MXvOZPoeTWbjjZNpTX0y7zItaSG7I+d4VlN/oXH6ouMvs9r0i0vlxhELjXSfyGrk9XxRsUzbT5479IbJjlHL7rWbmC8/vzmR3eC0NZ0Hmcg+izGfvWj2O1P63EgdP2sd9+9F/nuX/561aZZTyged4h5Gfsj+vZXdQKkt5c9abEjznA9k/63U0AHg5YWEDgAVQUIHgIpw23rZsA5mPy/pZ5K2SXphZAfuHXEO1pkQ55kQo0Scgzbucb4yIrZ32mmkCf3XB7V3R8QVIz/wGhHnYJ0JcZ4JMUrEOWhnSpydUHIBgIogoQNARaxXQr99nY67VsQ5WGdCnGdCjBJxDtqZEudprUsNHQAweJRcAKAiRp7QbV9n+0nbT9u+ZdTHX43tO2wftL13xbazbd9v+6ni+9Z1jvFC2w/aftz2Y7bfP6Zxztj+ju3vF3F+pNh+se2Hivf+i7bbdN0cPdt129+zfW8xHrs4bT9j+we299jeXWwbq/e9iOks23fZ/qHtJ2xfPU5x2n5N8W+4/HXE9gfGKcZ+jDSh265L+mdJfyTpUkk32L50lDGcxuckXZdtu0XSAxFxiaQHivF6WpL0wYi4VNJVkt5b/PuNW5zzkq6JiMsk7ZJ0ne2rJH1M0m0R8WpJhyTdtI4xrvR+SU+sGI9rnG+OiF0rLq8bt/ddkj4p6WsR8VpJl6n17zo2cUbEk8W/4S5JvyvpV5K+Ok4x9iUiRvYl6WpJX18xvlXSraOMoUN8F0nau2L8pKQdxc87JD253jFm8d4t6dpxjlPSBknflfR6tW7cmGj3WVjH+Haq9Qt8jaR71VpKbBzjfEbStmzbWL3vkrZI+qmKublxjXNFXG+V9L/jHONav0ZdcrlA0i9WjPcV28bVeRHxbPHzc5LOW89gVrJ9kaTLJT2kMYyzKGPskXRQ0v2SfizpcEQsr884Lu/9P0n6K51aHPEcjWecIekbth+xfXOxbdze94slPS/ps0UJ619sb9T4xbns3ZI+X/w8rjGuCZOiXYrW/7rH4pIg25skfVnSByLiyMrHxiXOiGhE68/anZKulPTadQ6pxPYfSzoYEY+sdyxdeGNEvE6tcuV7bf/+ygfH5H2fkPQ6SZ+KiMslHVdWuhiTOFXMi7xN0n/kj41LjL0YdULfL+nCFeOdxbZxdcD2Dkkqvh9c53hke1KtZP5vEfGVYvPYxbksIg5LelCt0sVZtpcXLh+H9/4Nkt5m+xlJX1Cr7PJJjV+cioj9xfeDatV8r9T4ve/7JO2LiIeK8V1qJfhxi1Nq/Y/xuxGx3Dh2HGNcs1En9IclXVJcRTCl1p8894w4hrW4R9KNxc83qlWzXjduddb4jKQnIuITKx4atzi32z6r+HlWrTr/E2ol9ncVu617nBFxa0TsjIiL1Posfisi/kxjFqftjbbnln9Wq/a7V2P2vkfEc5J+Yfs1xaa3SHpcYxZn4QadKrdI4xnj2q3DRMT1kn6kVk31b9Z7EmFFXJ+X9KykRbXONG5Sq576gKSnJH1T0tnrHOMb1fpT8FFJe4qv68cwzt+R9L0izr2S/rbY/puSviPpabX+1J1e7/d9RcxvknTvOMZZxPP94uux5d+bcXvfi5h2SdpdvPf/KWnruMUpaaOkFyVtWbFtrGLs9Ys7RQGgIpgUBYCKIKEDQEWQ0AGgIkjoAFARJHQAqAgSOgBUBAkdACqChA4AFfH/KAevGCaYsswAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.image as mpimg\n",
    "\n",
    "original_images_raw = pickle.load(open(\"bridge.p\", \"rb\"))[0:52850]\n",
    "O = np.array([transform.resize(i, (40, 80)) for i in original_images_raw])\n",
    "\n",
    "predict_images_raw = pickle.load(open(\"bridge_CNN_labels.p\", \"rb\" ))[0:75]\n",
    "print(len(predict_images_raw))\n",
    "I = np.array([transform.resize(i, (40, 80)) for i in predict_images_raw]).reshape(-1, 3, 3200)\n",
    "\n",
    "\n",
    "memory_size = 3\n",
    "batch_size = 17\n",
    "\n",
    "#Size of our input image. e.g. number of features\n",
    "number_of_features = 40 * 80\n",
    "\n",
    "steps_num = 1000\n",
    "\n",
    "tf.reset_default_graph()\n",
    "\n",
    "#input data\n",
    "X = tf.placeholder(tf.float32, [None, memory_size, number_of_features])\n",
    "#data label\n",
    "Y = tf.placeholder(tf.float32, [None, memory_size, number_of_features])\n",
    "\n",
    "#RNN cells\n",
    "cell = tf.contrib.rnn.DropoutWrapper(tf.contrib.rnn.BasicRNNCell(number_of_features, activation=tf.sigmoid), input_keep_prob=0.7, output_keep_prob=1, state_keep_prob=1)\n",
    "\n",
    "outputs, states = tf.nn.dynamic_rnn(cell, X, dtype=tf.float32)\n",
    "\n",
    "#loss\n",
    "loss = tf.losses.mean_squared_error(outputs, Y)\n",
    "\n",
    "optimizer = tf.train.AdamOptimizer()\n",
    "\n",
    "train = optimizer.minimize(loss)\n",
    "saver = tf.train.Saver()\n",
    "\n",
    "# Cell used to predicting\n",
    "with tf.Session() as sess:\n",
    "    saver.restore(sess, \"./tmp/rnn_model_RNN_SIGMOID/rnn_model\")\n",
    "    # input data used to predict, format:\n",
    "    x_input = I\n",
    "    print(x_input[0][0][3000:3020])\n",
    "    # The output should be a 1-D array whose size is height * width. \n",
    "    # In order to display it, it needs reshpe\n",
    "    y_pred = sess.run(outputs, feed_dict={X:x_input})\n",
    "    print(y_pred[0][0][3000:3020])\n",
    "    \n",
    "    n = 55\n",
    "\n",
    "    plt.figure()\n",
    "    plt.imshow(O[n])\n",
    "    \n",
    "    I = I.reshape(-1, 40, 80)\n",
    "\n",
    "    plt.figure()\n",
    "    plt.imshow(I[n])\n",
    "    \n",
    "    P = y_pred.reshape(-1, 40, 80)\n",
    "    pickle.dump(P,open('bridge_RNN_Sigmoid_labels.p', \"wb\" ))\n",
    "\n",
    "    plt.figure()\n",
    "    plt.imshow(P[n])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
